/**
 * 
 */
package interfaces.jefe;

import interfaces.general.DialogSeleccionFecha;

import java.sql.Date;
import java.sql.Time;
import java.util.ArrayList;
import java.util.ResourceBundle;

import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.custom.ScrolledComposite;


import aplicacion.Vista;

/**
 * @author Alberto
 * falta: 
 * -poner los strings con lo del idioma 
 * -meter los minutos a los label
 * -dar funcionalidad al boton guardar cambios
 * -obtener los dias de alguna tabla
 * 
 */
public class SubTabConfiguracionDias {

	private Vista vista=null;
	private String departamento;  //  @jve:decl-index=0:
	
	private Shell sShell = null;  //  @jve:decl-index=0:visual-constraint="83,31"
	private Composite composite = null;  //  @jve:decl-index=0:
	private Group gTiposDia = null;
	private Button rLunes = null;
	private Button rMartes = null;
	private Button rMiercoles = null;
	private Button rJueves = null;
	private Button rViernes = null;
	private Button rSabado = null;
	private Button rDomingo = null;
	private Button bNuevoTipo = null;
	private Button bEliminar = null;
	private Group gNumerosDia = null;
	private ArrayList<Label> lHorario = null;  //  @jve:decl-index=0:
	private ArrayList<Spinner> sMinimo = null;  //  @jve:decl-index=0:
	private ArrayList<Spinner> sMaximo = null;  //  @jve:decl-index=0:
	private ArrayList<String> sPatrones=null;  //  @jve:decl-index=0:
	private Button bGuardar = null;
	protected int seleccion;
	private ScrolledComposite scroll = null;  //  @jve:decl-index=0:
	protected int numero;


	private Composite cTipos = null;

	private Composite cNumeros = null;
	private Composite padre;
	private ResourceBundle bundle;
	private Composite cNumeros2;
	private ArrayList<Date> otrasFechas;
	private Button rFestivo;
	private Combo cmbFestivo;


	/**
	 * This method initializes composite	
	 *
	 */
	private void createComposite() {
		GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns = 2;
		composite = new Composite(scroll, SWT.NONE);
		createGTiposDia();
		composite.setLayout(gridLayout);
		createGNumerosDia();
	}

	/**
	 * This method initializes gTiposDia	
	 *
	 */
	private void createGTiposDia() {
		
		//se crean los griddata para el layout
		GridData gridData14 = new GridData();
		gridData14.horizontalAlignment = GridData.FILL;
		gridData14.verticalAlignment = GridData.CENTER;
		GridLayout gridLayout4 = new GridLayout();
		gridLayout4.numColumns = 1;
		GridData gridData3 = new GridData();
		gridData3.horizontalAlignment = GridData.FILL;
		gridData3.verticalAlignment = GridData.CENTER;
		GridData gridData2 = new GridData();
		gridData2.horizontalAlignment = GridData.FILL;
		gridData2.verticalAlignment = GridData.CENTER;
		GridData gridData1 = new GridData();
		gridData1.horizontalAlignment = GridData.BEGINNING;
		gridData1.grabExcessVerticalSpace = true;
		gridData1.verticalSpan = 1;
		gridData1.verticalAlignment = GridData.FILL;
		
		//se crea el grupo de la izquierda
		gTiposDia = new Group(composite, SWT.V_SCROLL);
		gTiposDia.setText(bundle.getString("ConfiguracionHorarios_label_tipos"));
		gTiposDia.setLayout(gridLayout4);
		//se crea un composite auxiliar donde se meten los radiobuton
		createCTipos();
		gTiposDia.setLayoutData(gridData1);
		
		//se van creando los radio buton
		rLunes = new Button(cTipos, SWT.RADIO);
		rLunes.setText(bundle.getString("lunes"));
		rLunes.setEnabled(false);
		rLunes.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				 bGuardar.setEnabled(true);
				 cmbFestivo.setEnabled(false);
				 seleccion=1;
				 int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,1,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 1),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				 scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				 composite.layout();
			}
		});
		rMartes = new Button(cTipos, SWT.RADIO);
		rMartes.setText(bundle.getString("martes"));
		rMartes.setEnabled(false);
		rMartes.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(false);
				seleccion=2;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,2,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 2),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});
		rMiercoles = new Button(cTipos, SWT.RADIO);
		rMiercoles.setText(bundle.getString("miercoles"));
		rMiercoles.setEnabled(false);
		rMiercoles.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(false);
				seleccion=3;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,3,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 3),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});
		rJueves = new Button(cTipos, SWT.RADIO);
		rJueves.setText(bundle.getString("jueves"));
		rJueves.setEnabled(false);
		rJueves.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(false);
				seleccion=4;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,4,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 4),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});
		rViernes = new Button(cTipos, SWT.RADIO);
		rViernes.setText(bundle.getString("viernes"));
		rViernes.setEnabled(false);
		rViernes.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(false);
				seleccion=5;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,5,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 5),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});
		rSabado = new Button(cTipos, SWT.RADIO);
		rSabado.setText(bundle.getString("sabado"));
		rSabado.setEnabled(false);
		rSabado.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(false);
				seleccion=6;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,6,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 6),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});
		rDomingo = new Button(cTipos, SWT.RADIO);
		rDomingo.setText(bundle.getString("domingo"));
		rDomingo.setEnabled(false);
		rDomingo.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(false);
				seleccion=7;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,7,null);
				 rellenar(vista.getDistribucionDepartamentoDiaSemana(departamento, 7),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});
		rFestivo = new Button(cTipos, SWT.RADIO);
		rFestivo.setText(bundle.getString("Festivo"));
		rFestivo.setEnabled(false);
		rFestivo.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				cmbFestivo.setEnabled(true);
				seleccion=8;
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				if (cmbFestivo.getItemCount()!=0){
					int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,8,otrasFechas.get(cmbFestivo.getSelectionIndex()));
					rellenar(vista.getFestivoDia(departamento, otrasFechas.get(cmbFestivo.getSelectionIndex())),new Time(horas[0],0,0),
							 new Time(horas[1],0,0));
					scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				}
				composite.layout();
			}
		});
		
		//se crea el combo que hay debajo para los festivos
		cmbFestivo = new Combo(cTipos, SWT.BORDER
				| SWT.READ_ONLY);
		cmbFestivo.setEnabled(false);

		cmbFestivo.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				bGuardar.setEnabled(true);
				seleccion=8;
				int[] horas=aplicacion.utilidades.Util.getHorario(vista, departamento,8,otrasFechas.get(cmbFestivo.getSelectionIndex()));
				rellenar(vista.getFestivoDia(departamento, otrasFechas.get(cmbFestivo.getSelectionIndex())),new Time(horas[0],0,0),
						 new Time(horas[1],0,0));
				scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
				composite.layout();
			}
		});	
		
		//se crean los botones de nuevo tipo y eliminar
		bNuevoTipo = new Button(gTiposDia, SWT.NONE);
		bNuevoTipo.setText(bundle.getString("ConfiguracionHorarios_boton_nuevo"));
		bNuevoTipo.setLayoutData(gridData2);
		bNuevoTipo.setEnabled(false);
		bNuevoTipo.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				
				DialogSeleccionFecha ventana = new DialogSeleccionFecha(sShell);
				while (!ventana.isDisposed()) {
					if (!sShell.getDisplay().readAndDispatch()) {
						sShell.getDisplay().sleep();
					}
				}
				final java.sql.Date fecha=ventana.getFecha();				
				
				ArrayList<Object[]> datos=new ArrayList<Object[]>();
				for (int i=0;i<24;i++){
					Object[] vector=new Object[4];
					vector[0]=i;
					vector[1]=0;
					vector[2]=0;
					vector[3]=new String("1e1p");	
					datos.add(vector);
				}
				vista.setFestivo(departamento,fecha,datos);			
				
				actualizarComboFestivos();
				
				cTipos.layout();
				gTiposDia.layout();
				gNumerosDia.layout();
				composite.layout();
			}
		});
		bEliminar = new Button(gTiposDia, SWT.NONE);
		bEliminar.setText(bundle.getString("ConfiguracionHorarios_boton_eliminar"));
		bEliminar.setLayoutData(gridData3);
		bEliminar.setEnabled(false);
		bEliminar.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				 if (seleccion <8){
					 MessageBox messageBox = new MessageBox(sShell,
								SWT.ICON_INFORMATION | SWT.OK);
						messageBox
								.setMessage(bundle.getString("ConfiguracionHorarios_error_eliminar"));
						messageBox.setText("Error");
						messageBox.open();
				 }
				 else{
					 vista.eliminarFestivo(departamento,otrasFechas.get(cmbFestivo.getSelectionIndex()));
					 
					 actualizarComboFestivos();
				 }
				
			}
		});
	}
	/**
	 * Este metodo actualiza los datos en el combo de los festivos, haciendo una llamada a la base de datos
	 *
	 */
	private void actualizarComboFestivos() {
		otrasFechas=vista.getFestivoFecha(departamento,new java.sql.Date(108,4,1));
		cmbFestivo.removeAll();
		for (int i=0;i<otrasFechas.size();i++){
			cmbFestivo.add(otrasFechas.get(i).toString());
		}		
		cmbFestivo.select(0);
	}

	/**
	 * This method initializes gNumerosDia	
	 *
	 */
	private void createGNumerosDia() {
		
		//se crean los griddata para el layout
		GridData gridData5 = new GridData();
		gridData5.horizontalSpan = 5;
		gridData5.verticalAlignment = GridData.CENTER;
		gridData5.horizontalAlignment = GridData.FILL;
		GridLayout gridLayout1 = new GridLayout();
		gridLayout1.numColumns = 2;
		gridLayout1.makeColumnsEqualWidth=true;
		GridData gridData4 = new GridData();
		gridData4.horizontalAlignment = GridData.FILL;
		gridData4.grabExcessHorizontalSpace = true;
		gridData4.grabExcessVerticalSpace = true;
		gridData4.verticalAlignment = GridData.FILL;
		
		//se crea el grupo principal, donde van los controles de configuracion
		gNumerosDia = new Group(composite, SWT.NONE);
		gNumerosDia.setText(bundle.getString("ConfiguracionHorarios_min_max"));
		gNumerosDia.setLayout(gridLayout1);
		gNumerosDia.setLayoutData(gridData4);
		
		//se inicializan los array de labels y spiners
		lHorario=new ArrayList<Label>();
		sMinimo=new ArrayList<Spinner>();
		sMaximo=new ArrayList<Spinner>();
		sPatrones=new ArrayList<String>();
		
		//se crean los composites auxiliares para colocar los componentes
		createCNumeros();
		createCNumeros2();
		
		//bucle que inicializa los labels y los spinners del lado izquierdo
		for (int i=0;i<12;i++){
			Label label1=new Label(cNumeros,SWT.NONE);
			label1.setText(bundle.getString("De") + " " + i + " " + bundle.getString("a") + " " + (i+1));
			label1.setToolTipText(bundle.getString("SubTab_aviso"));
			lHorario.add(label1);
			
			Spinner spMinimo=new Spinner(cNumeros, SWT.BORDER|SWT.READ_ONLY);
			spMinimo.setSelection(0);
			spMinimo.setMinimum(0);
			spMinimo.setToolTipText(bundle.getString("SubTab_minimo"));
			spMinimo.setBackground(sShell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
			
			sMinimo.add(spMinimo);						
						
			Spinner spMaximo=new Spinner(cNumeros, SWT.BORDER|SWT.READ_ONLY);
			spMaximo.setSelection(0);
			spMaximo.setMinimum(0);
			spMaximo.setToolTipText(bundle.getString("SubTab_maximo"));
			spMaximo.setBackground(sShell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
			sMaximo.add(spMaximo);
			
			
			final int actual=i;
			spMinimo.addMouseListener(new org.eclipse.swt.events.MouseAdapter() {
				public void mouseUp(org.eclipse.swt.events.MouseEvent e)  {
					if ((sMaximo.get(actual).getSelection()==0)&&(sMinimo.get(actual).getSelection()==0)){
						lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
					
					}
					else{
						lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
					}
					if (sMinimo.get(actual).getSelection()>sMaximo.get(actual).getSelection()){
						sMinimo.get(actual).setSelection(sMaximo.get(actual).getSelection());
					}
				}
			});
			spMaximo.addSelectionListener(new SelectionAdapter() {
			      public void widgetSelected(SelectionEvent e) {
			    	  if ((sMaximo.get(actual).getSelection()==0)&&(sMinimo.get(actual).getSelection()==0)){
							lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
						
						}
			    	  else{
			    		  lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
			    	  }
			    	  if (sMinimo.get(actual).getSelection()>sMaximo.get(actual).getSelection()){
							sMaximo.get(actual).setSelection(sMinimo.get(actual).getSelection());
						}
			        }
			      });
			
			label1.setLayoutData(new GridData(GridData.END,GridData.CENTER,true, false));
			spMinimo.setLayoutData(new GridData(GridData.CENTER,GridData.CENTER,true, false));
			spMaximo.setLayoutData(new GridData(GridData.BEGINNING,GridData.CENTER,true, false));

		}
		
		//bucle que inicializa los labels y los spinners del lado derecho
		for (int i=12;i<24;i++){
			Label label1=new Label(cNumeros2,SWT.NONE);
			label1.setText(bundle.getString("De") + " " + i + " " + bundle.getString("a") + " " + (i+1));
			label1.setToolTipText(bundle.getString("SubTab_aviso"));
			lHorario.add(label1);
			
			Spinner spMinimo=new Spinner(cNumeros2, SWT.BORDER|SWT.READ_ONLY);
			spMinimo.setSelection(0);
			spMinimo.setMinimum(0);	
			spMinimo.setToolTipText(bundle.getString("SubTab_minimo"));
			spMinimo.setBackground(sShell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
			sMinimo.add(spMinimo);
			
								
			final Spinner spMaximo=new Spinner(cNumeros2, SWT.BORDER|SWT.READ_ONLY);
			spMaximo.setSelection(0);
			spMaximo.setMinimum(0);
			spMaximo.setToolTipText(bundle.getString("SubTab_maximo"));
			spMaximo.setBackground(sShell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
			sMaximo.add(spMaximo);
			
			
			final int actual=i;
			spMinimo.addMouseListener(new org.eclipse.swt.events.MouseAdapter() {
				public void mouseUp(org.eclipse.swt.events.MouseEvent e)  {
					if ((sMaximo.get(actual).getSelection()==0)&&(sMinimo.get(actual).getSelection()==0)){
						lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
					
					}
					else{
						lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
					}
					if (sMinimo.get(actual).getSelection()>sMaximo.get(actual).getSelection()){
						sMinimo.get(actual).setSelection(sMaximo.get(actual).getSelection());
					}
				}
			});
			spMaximo.addSelectionListener(new SelectionAdapter() {
			      public void widgetSelected(SelectionEvent e) {
			    	  if ((sMaximo.get(actual).getSelection()==0)&&(sMinimo.get(actual).getSelection()==0)){
							lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
						
						}
			    	  else{
			    		  lHorario.get(actual).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
			    	  }
			    	  if (sMinimo.get(actual).getSelection()>sMaximo.get(actual).getSelection()){
							sMaximo.get(actual).setSelection(sMinimo.get(actual).getSelection());
						}
			        }
			      });
					
			label1.setLayoutData(new GridData(GridData.END,GridData.CENTER,true, false));
			spMinimo.setLayoutData(new GridData(GridData.CENTER,GridData.CENTER,true, false));
			spMaximo.setLayoutData(new GridData(GridData.BEGINNING,GridData.CENTER,true, false));
		}	
		
		//boton de guardar los datos
		bGuardar = new Button(gNumerosDia, SWT.NONE);
		bGuardar.setText(bundle.getString("ConfiguracionHorarios_boton_guardar"));
		bGuardar.setLayoutData(gridData5);
		bGuardar.setEnabled(false);
		
		bGuardar.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				MessageBox messageBox = new MessageBox(sShell,
						SWT.ICON_QUESTION | SWT.YES | SWT.NO);
				messageBox
						.setMessage(bundle.getString("Mensaje_aviso1"));
				messageBox.setText(bundle.getString("Mensaje_aviso3"));
				int response = messageBox.open();
				if (response == SWT.YES){
				ArrayList<String> horario=vista.getHorarioDpto(departamento);
				int apertura=Integer.valueOf(horario.get(0).substring(0, 2));				
				
				ArrayList<Object[]> datos=new ArrayList<Object[]>();
				for (int i=0;i<24;i++){
					Object[] vector=new Object[4];
					vector[0]=i;
					vector[1]=sMinimo.get(i).getSelection();
					vector[2]=sMaximo.get(i).getSelection();
					vector[3]=(String)sPatrones.get(i);	
					datos.add(vector);
				}
				if (seleccion<8){
					vista.setDistribucionDiaSemana(departamento,seleccion,datos);
				}
				else{
					vista.setFestivo(departamento,otrasFechas.get(cmbFestivo.getSelectionIndex()),datos);
				}
				MessageBox messageBox2 = new MessageBox(sShell,
						SWT.ICON_INFORMATION | SWT.OK);
				messageBox2
						.setMessage(bundle.getString("Mensaje_aviso2"));
				messageBox2.setText(bundle.getString("Mensaje_aviso4"));
				messageBox2.open();
			}}
		});
		
	}

	/**
	 * método que rellena los controles con los datos adecuados
	 * @param horarios arraylist que contiene el minimo, maximo y patron para cada hora
	 * @param apertura hora de apertura
	 * @param cierre hora de cierre
	 */
	private void rellenar(ArrayList<Object[]> horarios,Time apertura,Time cierre) {
			
		 sPatrones.clear();		 
		
		 //bucle que escribe en los spinners, y pone el texto en rojo s esta cerrado
		for (int i=0;i<24;i++){
			
			sMinimo.get(i).setSelection(((Integer)horarios.get(i)[1]));					

			sMaximo.get(i).setSelection(((Integer)horarios.get(i)[2]));
			
			if ((i<apertura.getHours())||(i>=cierre.getHours())){
				lHorario.get(i).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
			}
			else{
				lHorario.get(i).setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
			}
			sPatrones.add((String)horarios.get(i)[3]);
		}
		
		cNumeros.layout();
		cNumeros2.layout();
		gNumerosDia.layout();
	}


	/**
	 * This method initializes scroll	
	 *
	 */
	private void createScroll() {
		GridData gridData = new GridData();
		gridData.horizontalAlignment = GridData.FILL;
		gridData.grabExcessHorizontalSpace = true;
		gridData.grabExcessVerticalSpace = true;
		gridData.verticalAlignment = GridData.FILL;
		scroll = new ScrolledComposite(padre, SWT.H_SCROLL | SWT.V_SCROLL );
		scroll.setExpandHorizontal(true);
	    scroll.setExpandVertical(true);
		createComposite();
		scroll.setContent(composite);
		scroll.setLayoutData(gridData);
		scroll.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
	}
	/**
	 * constructor de la clase
	 * @param vista vista de la apliacion
	 * @param departamento departamento actual
	 * @param padre composite padre donde esta contenido
	 * @param bundle objeto que porta los datos de los strings
	 * @param shell shell de la aplicacion
	 */
	public SubTabConfiguracionDias(Vista vista, String departamento, Composite padre, ResourceBundle bundle, Shell shell){
		this.vista=vista;
		this.departamento=departamento;
		this.sShell=shell;
		this.padre=padre;
		this.bundle = bundle;
		createScroll();
	}
	
	/**
	 * This method initializes cTipos	
	 *
	 */
	private void createCTipos() {
		GridLayout gridLayout6 = new GridLayout();
		gridLayout6.horizontalSpacing=15;
		GridData gridData12 = new GridData();
		gridData12.horizontalAlignment = GridData.FILL;
		gridData12.verticalAlignment = GridData.FILL;
		cTipos = new Composite(gTiposDia, SWT.NONE);
		cTipos.setLayoutData(gridData12);
		cTipos.setLayout(gridLayout6);
	}

	/**
	 * This method initializes cNumeros	
	 *
	 */
	private void createCNumeros() {
		GridLayout gridLayout5 = new GridLayout();
		gridLayout5.numColumns = 3;
		gridLayout5.makeColumnsEqualWidth=true;
		GridData gridData13 = new GridData();
		gridData13.horizontalAlignment = GridData.FILL;
		gridData13.grabExcessHorizontalSpace = true;
		gridData13.grabExcessVerticalSpace = true;
		gridData13.verticalAlignment = GridData.FILL;
		cNumeros = new Composite(gNumerosDia, SWT.NONE);
		cNumeros.setLayoutData(gridData13);
		cNumeros.setLayout(gridLayout5);
	}
	
	/**
	 * This method initializes cNumeros2
	 *
	 */
	private void createCNumeros2() {
		GridLayout gridLayout5 = new GridLayout();
		gridLayout5.numColumns = 3;
		gridLayout5.makeColumnsEqualWidth=true;
		GridData gridData13 = new GridData();
		gridData13.horizontalAlignment = GridData.FILL;
		gridData13.grabExcessHorizontalSpace = true;
		gridData13.grabExcessVerticalSpace = true;
		gridData13.verticalAlignment = GridData.FILL;
		cNumeros2 = new Composite(gNumerosDia, SWT.NONE);
		cNumeros2.setLayoutData(gridData13);
		cNumeros2.setLayout(gridLayout5);
	}
	
	/**
	 * Metodo que introduce un gridData para el scroll
	 * @param g el gridData
	 */
	public void setGridData(GridData g){
		this.scroll.setLayoutData(g);
	}
	
	/**
	 * método que devuelve el scroll, que es el control contenedor de la clase
	 * @return el control a devolver
	 */
	public Composite getControl() {
		return scroll;
	}
	
	/**
	 * método que activa los controles de la clase despues de que se cargue la cache
	 * @param departamento departamento a configurar
	 */
	public void activar(String departamento){
		this.departamento=departamento;
		
		rLunes.setEnabled(true);
		rMartes.setEnabled(true);
		rMiercoles.setEnabled(true);
		rJueves.setEnabled(true);
		rViernes.setEnabled(true);
		rSabado.setEnabled(true);
		rDomingo.setEnabled(true);
		rFestivo.setEnabled(true);
		bNuevoTipo.setEnabled(true);
		bEliminar.setEnabled(true);

		actualizarComboFestivos();

		this.gNumerosDia.layout();
		this.gTiposDia.layout();
		this.composite.layout();
		this.scroll.layout();
		
	}
	

	/**
	 * método para insertar el departamento a configurar
	 * @param dpto el departamento
	 */
	public void setDepartamento(String dpto) {
		this.departamento=dpto;
		actualizarComboFestivos();
	}

}
